package com.itfenghuang.day15_jiaoshiwenj;

import java.io.*;
import java.net.Socket;
import java.util.Scanner;

/**
 *客户端 多人聊天
 */
public class A05_ClientChat {
    public static void main(String[] args) throws IOException {
        /**
         * 1.创建Socket
         * 2.控制台输入聊天消息    Scanner
         * 3).接收   nextLine()  返回的是一个字符串
         * 4).获取输出流,getOutputStream
         * 5).死循环
         * 6).接收控制台消息并发送到服务端需要一个线程
         */
        Scanner sc = new Scanner(System.in);
        Socket socket = new Socket("192.168.2.39", 10086);
        //获取输出流,用来写出数据
        OutputStream os = socket.getOutputStream();
        //转换流  OutputStreamWriter
        //字符缓冲输出流
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os));
        //接收控制台输入的信息并发送到服务端
        //1.接收控制台信息  2.将信息发送到服务端
        new Thread(new Runnable(){
            @Override
            public void run() {
               while(true){

                  //友好提示
                   System.out.println("请输入要发送的消息");
                   String line = sc.nextLine();
                   try {
                       bw.write(line);
                       //写出去一个换行符
                       bw.newLine();
                       //刷新缓冲区
                       bw.flush();
                   } catch (IOException e) {
                       e.printStackTrace();
                   }
               }
            }
        }).start();
        //使用一个新的线程去接收服务端回送的消息,并在控制台打印输出
        //获取输入流
        InputStream is = socket.getInputStream();
        BufferedReader br = new BufferedReader(new InputStreamReader(is));
        new Thread(new Runnable() {
            @Override
            public void run() {
                while(true){
                    try {
                        String line = br.readLine();
                        System.out.println(line);
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
        }).start();
    }
}
